拥有 Full GC 标签的文章 共 1 条数据

导致JVM进行Full GC的情况及解决办法
技术杂谈

导致JVM进行Full GC的情况及解决办法

3029次浏览 0条评论

堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:对年轻代(包括 Eden 和 Survivor 区域)进行GC被称为 Minor GC,对老年代进行GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但非绝对的。Major GC的速度一般会比Minor GC慢10倍以上。下边看看有那种情况会导致JVM进行Full GC及解决办法。1、System.gc()方法的调用 此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full GC的频率,也即增加了间歇性停顿的次数。建议能不使用此方法就别使用,让虚拟机自己去管理它的内存,可通过通过-XX:+ DisableExplicitGC来禁止RMI调用System.gc()。2、老年代空间不足老年代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足